package cn.tansanqinger.dao.sql.user;

import java.util.HashMap;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;

import cn.tansanqinger.dao.sql.IUserMessage;
import cn.tansanqinger.pojo.User;
/**
 * 对User表中的数据进行增删改查操作
 * @author C3H2
 * @time 9月
 */
@Repository
public class UserMessageDispose {
	
	@Autowired
	private IUserMessage iUserMessage;
	
	/**
	 * 保存一条数据
	 * @param user 传入要保存的数据
	 * @return 返回结果
	 */
	public int insert(User account) {
		return iUserMessage.insert(account);
	}
	
	/**
	 * 查询一条单一的数据
	 * @param email 传入邮箱账号
	 * @return 返回查询结果
	 */
	public User selectOneEmail(String email) {
		QueryWrapper<User> wrapper = new QueryWrapper<User>();
		wrapper.lambda().eq(User::getEmail, email);
		return iUserMessage.selectOne(wrapper);
	}
	
	/**
	 * 查询单一数据
	 * @param id
	 * @return
	 */
	public User selectOneId(int id) {
		return iUserMessage.selectById(id);
	}
	
	/**
	 * 查询一条单一的数据
	 * @param phone 传入手机号
	 * @return 返回查询结果
	 */
	public User selectOnePhone(String phone) {
		QueryWrapper<User> wrapper = new QueryWrapper<User>();
		wrapper.lambda().eq(User::getPhone, phone);
		return iUserMessage.selectOne(wrapper);
	}
	
	/**
	 * 检查Email是否存在
	 * @param email 传入邮箱
	 * @return 返回结果
	 */
	public boolean isEmail(String email) {
		if(selectOneEmail(email)!=null) {
			return true;
		}
		return false;
	}
	/**
	 * 检查电话号码是否存在
	 * @param phone 传入手机号
	 * @return 返回结果
	 */
	public boolean isPhone(String phone) {
		if(selectOnePhone(phone)!=null) {
			return true;
		}
		return false;
	}
	
	/**
	 * 修改一条数据 通过邮箱进行修改
	 * @param user 要修改的值
	 * @param email 要修改的邮箱账号
	 * @return 返回修改结果
	 */
	public int updateOne(User account, String email) {
		UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>();
		updateWrapper.lambda().eq(User::getEmail, email);
		return iUserMessage.update(account, updateWrapper);
	}
	
	/**
	 * 修改数据
	 * @param account
	 * @return
	 */
	public boolean updateById(User account) {
		return iUserMessage.updateById(account)>0?true:false;
	}
	
	/**
	 * 用户注销账号
	 * @param email 通过email进行注销
	 * @return 返回结果
	 */
	public int delete(String email) {
		HashMap<String, Object> map = new HashMap<>();
		map.put("a_email", email);
		return iUserMessage.deleteByMap(map);
	}
}
